ЛІНІЙНІ ОДНОЗВ’ЯЗНІ ТА ДВОЗВ’ЯЗНІ СПИСКИ

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
ЗІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2022
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування складних алгоритмів

Частина тексту файла

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ “КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ імені  ІГОРЯ СІКОРСЬКОГО”                     ЗВІТ з лабораторної роботи №5 з навчальної дисципліни “Програмування складних алгоритмів”             Тема: «ЛІНІЙНІ ОДНОЗВ’ЯЗНІ ТА ДВОЗВ’ЯЗНІ СПИСКИ» Варіант 18             Мета: Метою лабораторної роботи є ознайомитися з основами роботи з двозв’язним списком, однозв’язним списком, стеком та чергою. Теоретична частина Лінійнийоднозвв’язний список Лінійний список – цединамічна структура даних, кожнийелементякої за допомогоювказівниказв’язується з наступнимелементом. З визначеннявипливає, щокоженелемент списку містить поле даних (Data) (вономожематискладну структуру) і поле посилання на наступнийелемент (next). Поле посиланняостанньогоелемента повинно міститипорожнійпокажчик (NULL). Так як посиланнялишеодне (тільки на наступнийелемент), то такий список є однозв’язним. Коли говорять про лінійний список, то, як правило, мають на увазісамеоднозв’язний список. Двобічнозв'язаний список — вид зв'язаного списку, у якому посилання в кожному вузлівказують на попередній і на подальший вузол у списку. Якщов спискупісляостанньогоелементайде перший, то такий список називається кільцевимдвобічнозв'язаним списком. Тобто, поле prev голови списку вказує на хвіст списку, а поле next хвоста списку вказує на голову списку. По двобічнозв'язаному списку можнапересуватисяв будь-якомунапрямку — як від початку до кінця, так і навпаки. Для ньогопростішепроводити видалення і перестановку елементів, оскількизавждивідоміадреси тих елементів списку, вказівник якихспрямований на змінюваний елемент. Завдання до лабораторної роботи: 1. Створити лінійний однозв’язний список, вивести його. Якщо в списку є елемент із заданим ключем, вилучити його, а попередній та настуні поміняти місцями. Виконати завдання згідно варіанту. 2. Створити двозв’язний список, вивести його. Якщо в списку є елемент із заданим ключем, вилучити його. Виконати завдання згідно варіанту з двозвязним списком. 18. Створити стек цілих чисел. Визначити чого більше – парних чи непарних чисел. Результат роботи / Висновок: Було написано програму, яка перевіряє два списки на наявність ключа, вказаного користувачем, і видаляє при знаходженні. Потім програма рахує кількість парних і непарних чисел в обох списках і порівнює їх. Програмний код https://replit.com/join/grgnrhpoac-okseniait #include <iostream> #include <time.h> #include <random> #include <chrono> #include "List2.h" #include "List1.h" using namespace std; int iteration = 0; #define SIZE 10 int main() { srand(time(NULL)); //Однозв'язний список cout << "Однозв'язний список\n"; List1<int> lst1; for(int i = 0;i < SIZE;i++){ lst1.pushback(rand()%50); } for(int i = 0;i < lst1.GetSize();i++){ cout << lst1[i] << " "; } int key; cout << "\nВведіть ключ: "; cin >> key; for(int i = 0;i < lst1.GetSize();i++){ if(lst1[i] == key){ lst1.remove(i); int storage, start[i], scount = 0, end[lst1.GetSize() - i], ecount = 0; for(int j = 0;j < lst1.GetSize();j++){ if(j < i){ start[scount] = lst1[j]; scount++; } else{ end[ecount] = lst1[j]; ecount++; } } scount = 0; ecount = 0; for(int j = 0;j < lst1.GetSize();j++){ if(j < lst1.GetSize() - i){ lst1[j] = end[ecount]; ecount++; } else{ lst1[j] = start[scount]; scount++; } } break; } } for(int i = 0;i < lst1.GetSize();i++){ cout << lst1[i] << " "; } cout << endl; ///// int even[SIZE], odd[SIZE], ecount = 0, ocount = 0; auto start1 = chrono::high_resolution_clock::now(); for(int i = 0;i < lst1.GetSize();i++){ if(lst1[i] % 2 == 0){ // even[ecount] = lst1[i]; ecount++; iteration++; } else if(lst1[i] % 2 != 0){ odd[ocount] = lst1[i]; ocount++; iteration++; } } auto finish1 = chro...
Антиботан аватар за замовчуванням

28.07.2023 13:07

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини